#include <stdbool.h>
#include "learn.h"

bool btn_clicked(GPIO_TypeDef *GPIOx, uint16_t Pin)
{
    bool clicked = false;
    //btn push down
    if (GPIO_ReadInputDataBit(GPIOx, Pin) == 0) {
        Delay_ms(20);
        while (GPIO_ReadInputDataBit(GPIOx, Pin) == 0)
            clicked = true;
        Delay_ms(20);
    }
    return clicked;
}

void led_turn(GPIO_TypeDef *GPIOx, uint16_t Pin)
{
    if (GPIO_ReadOutputDataBit(GPIOx, Pin))
        GPIO_ResetBits(GPIOx, Pin);
    else
        GPIO_SetBits(GPIOx, Pin);
}

_Noreturn void class_3_4()
{
    APB2_ENABLE(GPIOA, Out_PP, GPIO_Pin_All, 50MHz);
    APB2_ENABLE(GPIOB, IPU, GPIO_Pin_All, 50MHz);

    GPIO_SetBits(GPIOA, GPIO_Pin_All);

    while (1) {
        if (btn_clicked(GPIOB, GPIO_Pin_1))
            led_turn(GPIOA, GPIO_Pin_1);

        if (btn_clicked(GPIOB, GPIO_Pin_11))
            led_turn(GPIOA, GPIO_Pin_2);
    }
}
